home *** CD-ROM | disk | FTP | other *** search
- // Copyright (C) 1986-2001 by Digital Mars.
- // www.digitalmars.com
-
- #if __DMC__ || __RCC__
- #pragma once
- #endif
-
- #ifndef __STRING_H
- #define __STRING_H 1
-
- #if __cplusplus
- extern "C" {
- #endif
-
- /* Define _CRTAPI1 (for compatibility with the NT SDK) */
- #ifndef _CRTAPI1
- #define _CRTAPI1 __cdecl
- #endif
-
- /* Define _CRTAPI2 (for compatibility with the NT SDK) */
- #ifndef _CRTAPI2
- #define _CRTAPI2 __cdecl
- #endif
-
- /* Define CRTIMP */
- #ifndef _CRTIMP
- #if defined(_WIN32) && defined(_DLL)
- #define _CRTIMP __declspec(dllimport)
- #else
- #define _CRTIMP
- #endif
- #endif
-
- typedef unsigned size_t;
-
- #ifndef __STDC__
- #if !defined(_WCHAR_T_DEFINED)
- typedef unsigned short wchar_t;
- #define _WCHAR_T_DEFINED 1
- #endif
- #endif
-
- #define _NLSCMPERROR 2147483647
-
- #ifndef NULL
- #ifdef __cplusplus
- #define NULL 0
- #else
- #define NULL ((void *)0)
- #endif
- #endif
-
- #if __OS2__ && __INTSIZE == 4
- #define __CLIB __stdcall
- #else
- #define __CLIB __cdecl
- #endif
-
- void * __CLIB memcpy(void *,const void *,size_t);
- void * __CLIB _inline_memcpy(void *,const void *,size_t);
- void * __CLIB memmove(void *,const void *,size_t);
- char * __CLIB strcpy(char *,const char *);
- char * __CLIB _inline_strcpy(char *,const char *);
- char * __CLIB strncpy(char *,const char *,size_t);
- char * __CLIB strcat(char *,const char *);
- char * __CLIB strncat(char *,const char *,size_t);
- int __CLIB memcmp(const void *,const void *,size_t);
- int __CLIB _inline_memcmp(const void *,const void *,size_t);
- int __CLIB strcmp(const char *,const char *);
- int __CLIB _inline_strcmp(const char *,const char *);
- int __CLIB strcoll(const char *,const char *);
- int __CLIB strncmp(const char *,const char *,size_t);
- size_t __CLIB strxfrm(char *,const char *,size_t);
- size_t __CLIB strcspn(const char *,const char *);
- size_t __CLIB strspn(const char *,const char *);
- char * __CLIB strtok(char *,const char *);
- void * __CLIB memset(void *,int,size_t);
- char * __CLIB strerror(int);
- size_t __CLIB strlen(const char *);
- size_t __CLIB _inline_strlen(const char *);
-
- /* Unicode string routines, these are in wchar.h as well */
- size_t __CLIB wcslen(const wchar_t *);
- _CRTIMP wchar_t * __CLIB wcscpy(wchar_t *, const wchar_t *);
- #ifdef __NT__
- wchar_t * __CLIB wmemcpy(wchar_t *,const wchar_t *,size_t);
- wchar_t * __CLIB wmemmove(wchar_t *,const wchar_t *,size_t);
- wchar_t * __CLIB wmemset(wchar_t *,wchar_t,size_t);
- wchar_t * __CLIB wcsncpy(wchar_t *, const wchar_t *, size_t);
- wchar_t * __CLIB wcscat(wchar_t *, const wchar_t *);
- wchar_t * __CLIB wcsncat(wchar_t *, const wchar_t *, size_t);
- int __CLIB wcscmp(const wchar_t *, const wchar_t *);
- int __CLIB wcsncmp(const wchar_t *, const wchar_t *, size_t);
- int __CLIB wcscoll(const wchar_t *, const wchar_t *);
- size_t __CLIB wcsxfrm(wchar_t *, const wchar_t *, size_t);
- size_t __CLIB wcscspn(const wchar_t *, const wchar_t *);
- size_t __CLIB wcsspn(const wchar_t *, const wchar_t *);
- wchar_t * __CLIB wcstok(wchar_t *, const wchar_t *);
- int __CLIB _wcsicoll(const wchar_t *, const wchar_t *);
- int __CLIB _wcsncoll(const wchar_t *, const wchar_t *, size_t);
- int __CLIB _wcsnicoll(const wchar_t *, const wchar_t *, size_t);
- int __CLIB _wcsicmp(const wchar_t *, const wchar_t *);
- _CRTIMP int __CLIB _wcsnicmp(const wchar_t *, const wchar_t *, size_t);
- _CRTIMP wchar_t * __CLIB _wcsdup(const wchar_t *);
- wchar_t * __CLIB _wcslwr(wchar_t *);
- wchar_t * __CLIB _wcsupr(wchar_t *);
- wchar_t * __CLIB _wcsnset(wchar_t *, wchar_t, size_t);
- wchar_t * __CLIB _wcsrev(wchar_t *);
- wchar_t * __CLIB _wcsset(wchar_t *, wchar_t);
- #define wcswcs wcsstr
- #define wcsdup _wcsdup
- #define wcsicmp _wcsicmp
- #define wcsnicmp _wcsnicmp
- #define wcsnset _wcsnset
- #define wcsrev _wcsrev
- #define wcsset _wcsset
- #define wcslwr _wcslwr
- #define wcsupr _wcsupr
- #define wcsicoll _wcsicoll
- #endif
-
- int * __CLIB _memintset(int *, int, size_t);
- int __CLIB memicmp(const void *,const void *,size_t);
- void * __CLIB memccpy(void *,const void *,int,unsigned int);
- char * __CLIB stpcpy(char *,const char *);
- int __CLIB stricmp(const char *,const char *);
- int __CLIB strcmpl(const char *,const char *); /* obsolete */
- int __CLIB strnicmp(const char *, const char *, size_t);
- char * __CLIB strdup(const char *);
- char * __CLIB strlwr(char *);
- char * __CLIB strupr(char *);
- char * __CLIB strnset(char *,int,size_t);
- char * __CLIB strrev(char *);
- char * __CLIB strset(char *,int);
- void __CLIB swab(char *,char *,size_t);
- void __CLIB movedata(unsigned short srcseg,unsigned srcoff,unsigned short destseg,unsigned destoff,size_t nbytes);
- char * __CLIB _strerror(const char *);
- int __CLIB _stricoll(const char *, const char *);
- int __CLIB _strncoll(const char *, const char *, size_t);
- int __CLIB _strnicoll(const char *, const char *, size_t);
-
- #if __INTSIZE == 2
- void __far * __CLIB __far fmemccpy(void __far *,const void __far *,int,unsigned int);
- void __far * __CLIB __far fmemchr(const void __far *,int,size_t);
- int __CLIB __far fmemcmp(const void __far *,const void __far *,size_t);
- int __CLIB __far _fmemcmp(const void __far *,const void __far *,size_t);
- int __CLIB _inline_fmemcmp(const void __far *,const void __far *,size_t);
- void __far * __CLIB __far fmemcpy(void __far *,const void __far *,size_t);
- void __far * __CLIB __far _fmemcpy(void __far *,const void __far *,size_t);
- void __far * __CLIB _inline_fmemcpy(void __far *,const void __far *,size_t);
- int __CLIB __far fmemicmp(const void __far *,const void __far *,size_t);
- void __far * __CLIB __far fmemmove(void __far *,const void __far *,size_t);
- void __far * __CLIB __far _fmemmove(void __far *,const void __far *,size_t);
- void __far * __CLIB __far fmemset(void __far *,int,size_t);
- char __far * __CLIB __far fstrcat(char __far *,const char __far*);
- char __far * __CLIB __far fstrchr(const char __far *,int);
- char __far * __CLIB __far _fstrchr(const char __far *,int);
- int __CLIB __far fstrcmp(const char __far *,const char __far *);
- int __CLIB __far _fstrcmp(const char __far *,const char __far *);
- int __CLIB _inline_fstrcmp(const char __far *,const char __far *);
- char __far * __CLIB __far fstrcpy(char __far *,const char __far *);
- char __far * __CLIB __far _fstrcpy(char __far *,const char __far *);
- char __far * __CLIB _inline_fstrcpy(char __far *,const char __far *);
- size_t __CLIB __far fstrcspn(const char __far *,const char __far *);
- char __far * __CLIB __far fstrdup(const char __far *);
- char __near * __CLIB __far _nstrdup(const char __far *);
- int __CLIB __far fstricmp(const char __far *,const char __far *);
- size_t __CLIB __far fstrlen(const char __far *);
- size_t __CLIB _inline_fstrlen(const char __far *);
- size_t __CLIB __far _fstrlen(const char __far *);
- char __far * __CLIB __far fstrlwr(char __far *);
- char __far * __CLIB __far fstrncat(char __far *,const char __far *,size_t);
- int __CLIB __far fstrncmp(const char __far *,const char __far *,size_t);
- char __far * __CLIB __far fstrncpy(char __far *,const char __far *,size_t);
- int __CLIB __far fstrnicmp(const char __far *, const char __far *, size_t);
- char __far * __CLIB __far fstrnset(char __far *,int,size_t);
- char __far * __CLIB __far fstrpbrk(const char __far *,const char __far *);
- char __far * __CLIB __far fstrrchr(const char __far *,int);
- char __far * __CLIB __far fstrrev(char __far *);
- char __far * __CLIB __far fstrset(char __far *,int);
- size_t __CLIB __far fstrspn(const char __far *,const char __far *);
- char __far * __CLIB __far fstrstr(const char __far *,const char __far *);
- char __far * __CLIB __far fstrtok(char __far *,const char __far *);
- char __far * __CLIB __far _fstrtok(char __far *,const char __far *);
- char __far * __CLIB __far fstrupr(char __far *);
- #endif
-
- #ifndef __NT__
- #define strcoll strcmp
- #define _stricoll stricmp
- #define _strncoll strncmp
- #define _strnicoll strnicmp
- #endif
-
- #define strncmpl strnicmp
-
- #if !__STDC__
- #define _stricmp stricmp
- #define strcmpi stricmp
- #define _strcmpi stricmp
- #define movmem(src,dest,len) ((void)memmove(dest,src,len))
- #define setmem(dest,len,chr) ((void)memset(dest,chr,len))
- #define strncmpi strnicmp
- #define _strnicmp strnicmp
- #define _movedata movedata
- int __CLIB _memicmp(const void *,const void *,size_t);
- #define _memccpy memccpy
- char * __CLIB _strdup(const char *);
- #define _strlwr strlwr
- #define _strnset strnset
- char * __CLIB _strrev(char *);
- #define _strset strset
- #define _strupr strupr
- #define _swab swab
-
- #if __INTSIZE == 2
- #define _fmemicmp fmemicmp
- #define _fmemccpy fmemccpy
- #define _fmemcpy(x,y,n) _inline_fmemcpy(x,y,n)
- #define fmemcpy(x,y,n) _inline_fmemcpy(x,y,n)
- #define _fmemchr fmemchr
- #define _fmemset fmemset
- #define _fstrcat fstrcat
- #define _fstrcat fstrcat
- #define _fstrcspn fstrcspn
- #define _fstrdup fstrdup
- #define _fstricmp fstricmp
- #define _fstrcmpl fstricmp
- #define _fstrlwr fstrlwr
- #define _fstrncat fstrncat
- #define _fstrncmp fstrncmp
- #define _fstrnicmp fstrnicmp
- #define _fstrncpy fstrncpy
- #define _fstrnset fstrnset
- #define _fstrpbrk fstrpbrk
- #define _fstrrchr fstrrchr
- #define _fstrrev fstrrev
- #define _fstrset fstrset
- #define _fstrspn fstrspn
- #define _fstrstr fstrstr
- #define _fstrupr fstrupr
- #define _nmemicmp nmemicmp
-
- #if !__LARGE__
- #define _fstrcmp(x,y) _inline_fstrcmp(x,y)
- #define fstrcmp(x,y) _inline_fstrcmp(x,y)
- #define _fstrcpy(x,y) _inline_fstrcpy(x,y)
- #define fstrcpy(x,y) _inline_fstrcpy(x,y)
- #define _fstrlen(s) _inline_fstrlen(s)
- #define fstrlen(s) _inline_fstrlen(s)
- #endif
-
- #endif
- #endif
-
- #if !__STDC__
- extern int __CLIB sys_nerr;
- extern char * __CLIB sys_errlist[];
- #endif
-
- #if __cplusplus
- }
- #endif
-
- #if 0 && __cplusplus
- extern "C" char * __CLIB strchr(char *,int);
- inline const char *strchr(const char *s, int n) { return strchr((char *)s, n); }
-
- extern "C" char * __CLIB strrchr(char *,int);
- inline const char *strrchr(const char *s, int n) { return strrchr((char *)s, n); }
-
- extern "C" const char * __CLIB strpbrk(const char *,const char *);
- inline char *strpbrk(char *s1,const char *s2) { return (char *) strpbrk((const char *)s1,s2); }
-
- extern "C" char * __CLIB strstr(char *,const char *);
- inline const char *strstr(const char *s1,const char *s2) { return strstr((char *)s1, s2); }
-
- extern "C" void * __CLIB memchr(void *,int,size_t);
- inline const void *memchr(const void *s, int c, size_t n) { return memchr((void *)s, c, n); }
-
- extern "C" _CRTIMP wchar_t * __CLIB wcschr(wchar_t *,int);
- inline const wchar_t *wcschr(const wchar_t *s, int n) { return wcschr((wchar_t *)s, n); }
-
- extern "C" wchar_t * __CLIB wcsrchr(wchar_t *,int);
- inline const wchar_t *wcsrchr(const wchar_t *s, int n) { return wcsrchr((wchar_t *)s, n); }
-
- extern "C" const wchar_t * __CLIB wcspbrk(const wchar_t *,const wchar_t *);
- inline wchar_t *wcspbrk(wchar_t *s1,const wchar_t *s2) { return (wchar_t *) wcspbrk((const wchar_t *)s1,s2); }
-
- extern "C" wchar_t * __CLIB wcswcs(wchar_t *,const wchar_t *);
- inline const wchar_t *wcswcs(const wchar_t *s1,const wchar_t *s2) { return wcswcs((wchar_t *)s1, s2); }
-
- extern "C" void * __CLIB wmemchr(void *,wchar_t,size_t);
- inline const void *wmemchr(const void *s, wchar_t c, size_t n) { return wmemchr((void *)s, c, n); }
-
- #else
-
- #if __cplusplus
- extern "C" {
- #endif
-
- char * __CLIB strchr(const char *,int);
- char * __CLIB strrchr(const char *,int);
- char * __CLIB strpbrk(const char *,const char *);
- char * __CLIB strstr(const char *,const char *);
- void * __CLIB memchr(const void *,int,size_t);
-
- _CRTIMP wchar_t * __CLIB wcschr(const wchar_t *, wchar_t);
- wchar_t * __CLIB wcsrchr(const wchar_t *, wchar_t);
- wchar_t * __CLIB wcspbrk(const wchar_t *, const wchar_t *);
- wchar_t * __CLIB wcsstr(const wchar_t *, const wchar_t *);
- wchar_t * __CLIB wmemchr(const wchar_t *,wchar_t,size_t);
-
- #if __cplusplus
- }
- #endif
-
- #endif
-
- #endif
-